<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 原型式继承
        function Student(name){
            this.name=name;
        }

        var stu=new Student("alice");
        // 方式一：动态向原型对象中添加属性
        Student.prototype.age=20;
        Student.prototype.sex="male";
        Student.prototype.run=function(){
            console.log("我在跑步");
        };

      
        // console.log(stu.sex);
        // console.log(stu.age);
        // stu.run();

        //方式二：直接覆盖原型对象,只很对于覆盖之后创建的对象有效
        //新增的属性和方法对覆盖之后创建的对象有效
        Student.prototype={
            constructor:Student,//如果希望覆盖之后创建的对象是类型相关的，必须添加constructor
            hobby:"吃饭",
            study:function(){
                console.log("我爱学习");
            },
            show:function(){
                console.log("嘿嘿，我是show");
            }
        };
        var stu2=new Student("cici");
        console.log(stu.age);
        console.log(stu2.age);//覆盖之后的对象无法访问age
        console.log(stu.sex);
        console.log(stu2.sex);//覆盖之后的对象无法访问sex
        console.log(stu.hobby);//覆盖之前的对象无法访问hobby
        console.log(stu2.hobby);
        console.log(stu2.constructor.name);


    </script>
</head>
<body>
    
</body>
</html>